package dados;

import java.util.ArrayList;

import basico.Servico;

public class ListaServicoCodigo {
		private int numAtendimento;
		private ListaServicoSeg lista;
		private ListaServicoCodigo prox;
		public ListaServicoCodigo(int numAtendimento, ListaServicoSeg lista, ListaServicoCodigo prox) {
			this.numAtendimento = numAtendimento;
			this.lista = lista;
			this.prox = prox;
		}
		public ListaServicoSeg getLista() {
			return lista;
		}
		public void setLista(ListaServicoSeg lista) {
			this.lista = lista;
		}
		public int getNumAtendimento() {
			return numAtendimento;
		}
		public void setNumAtendimento(int numAtendimento) {
			this.numAtendimento = numAtendimento;
		}
		public ListaServicoCodigo getProx() {
			return prox;
		}
		public void setProx(ListaServicoCodigo prox) {
			this.prox = prox;
		}
		public void add(int numAtendimento, int seqAtendimento, int posicao) {
			if (prox==null) {
				prox=new ListaServicoCodigo(numAtendimento,
						new ListaServicoSeg(seqAtendimento,null,posicao),null); 
			} else if (prox.getNumAtendimento()==numAtendimento){
				prox.addSeq(seqAtendimento,posicao);
			} else if (prox.getNumAtendimento()>numAtendimento){
				prox=new ListaServicoCodigo(numAtendimento,
						new ListaServicoSeg(seqAtendimento,null,posicao),prox);
			} else {
				prox.add(numAtendimento,seqAtendimento,posicao);
			}
			
		}
		public void addSeq(int seqAtendimento, int posicao) {
			if (lista.getSeq()>seqAtendimento){
				lista=new ListaServicoSeg(seqAtendimento,lista,posicao);
			} else if (lista.getSeq()<seqAtendimento){
				lista.add(seqAtendimento,posicao);
			}
			
		}
		public ArrayList getIndicesSeq(int numAtendimento) {
			ArrayList retorno = new ArrayList();
			if (getNumAtendimento()==numAtendimento){
				ListaServicoSeg indice = lista;
				while (indice!=null){
					retorno.add(new Integer(indice.getPosicao()));
					indice=indice.getProx();
				}
			} else if (this.prox!=null){
				retorno=this.prox.getIndicesSeq(numAtendimento);
			}
			return retorno;
		}
		public int getPosicaoServico(int numAtendimento2, int seqAtendimento) {
			int retorno=-1;
			if (getNumAtendimento()==numAtendimento){
				ListaServicoSeg indice = lista;
				while (indice!=null){
					if (indice.getSeq()==seqAtendimento){
						retorno=indice.getPosicao();
					}
					indice=indice.getProx();
				}
			} else if (this.prox!=null){
				retorno=this.prox.getPosicaoServico(numAtendimento,seqAtendimento);
			}
			return retorno;
		}
		//estou aqui-------------
		public boolean removerIndice(Servico s) {
			boolean retorno=false;
			if (s.getNumAtendimento()==this.numAtendimento){
				ListaServicoSeg indice = lista;
				ListaServicoSeg anterior=null;
				if (lista!=null &&lista.getSeq()==s.getSeqAtendimento()){
					lista=lista.getProx();
				} else {
					//lista.remover(s);
				}
			} else if (this.prox!=null){
				//retorno=prox.removerIndice(s);
			}
			return false;
		}
}
